package com.zbkj.service.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.product.Product;
import com.zbkj.common.request.ProductFrontSearchRequest;
import com.zbkj.common.response.*;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 商品表 Mapper 接口
 * </p>
 *
 * @author HZW
 * @since 2022-07-19
 */
public interface ProductDao extends BaseMapper<Product> {
    /**
     * 平台端商品分页列表
     *
     * @param map 查询参数
     */
    List<PlatformProductListResponse> getPlatformPageList(Map<String, Object> map);

    /**
     * 移动端商品列表
     *
     * @param map 查询参数
     */
    List<ProductFrontResponse> findH5List(Map<String, Object> map);

    /**
     * 商品搜索分页列表（活动）
     *
     * @param map 查询参数
     */
    List<ProductActivityResponse> getActivitySearchPage(Map<String, Object> map);

    /**
     * 商品搜索分页列表（营销）
     *
     * @param map 查询参数
     */
    List<ProductMarketingResponse> getMarketingSearchPage(Map<String, Object> map);

    /**
     * 商品搜索分页列表（活动）商户
     *
     * @param map 查询参数
     */
    List<ProductActivityResponse> getActivitySearchPageByMerchant(Map<String, Object> map);

    /**
     * 商品搜索分页列表（营销）商户
     *
     * @param map 查询参数
     */
    List<ProductMarketingResponse> getMarketingSearchPageByMerchant(Map<String, Object> map);

    /**
     * 根据关键字获取商品所有的品牌ID
     *
     * @param keyword 关键字
     */
    List<Integer> findProductBrandIdByKeyword(@Param(value = "keyword") String keyword);

    /**
     * 根据关键字获取商品所有的分类ID
     *
     * @param keyword 关键字
     */
    List<Integer> findProductCategoryIdByKeyword(@Param(value = "keyword") String keyword);

    /**
     * 平台端商品列表表头数量
     *
     * @param map 查询参数
     */
    Integer getPlatformPageCount(Map<String, Object> map);


    /**
     * 根据门店id查询该门店下的商品id
     *
     * @param id
     * @return
     */
    List<ProductAndProductAttrValueResponse> selectProductIdListByRoomId(@Param("id") Long id, @Param("keyword") String keyword);

    /**
     * 获取首页商品列表
     *
     * @param cidList
     * @param request
     * @return
     */
    List<Product> getIndexProductV2(@Param("cidList") Set<Integer> cidList, @Param("position") String position, @Param("request") ProductFrontSearchRequest request);

    /**
     * 获取首页商品列表
     *
     * @param cidList
     * @return
     */
    List<Product> getIndexProductV2NoPosition(@Param("cidList") Set<Integer> cidList, @Param("request") ProductFrontSearchRequest request);


    /**
     * 商品列表导出
     *
     * @param map
     * @return
     */
    List<PlatformProductListResponse> getPlatformPageListExportExcel(HashMap<String, Object> map);
}
